/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package p2p;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Administrador
 */
public class Controller {

    public Vista v;
    public Modelo m;

    public Controller() throws IOException {
        v = new Vista(this);
        m = new Modelo(this,v);
        v.setVisible(true);
    }

    public void conectar()throws Throwable {
        m.conectar();
        m.escuchar();
        m.escucharBeta();
        m.rotar();
    }
    
    public void listarArchivos()throws Throwable{
        m.listarArchivos();
    }
    
    public void desconectar() throws Throwable{
        m.desconectar();
        v.btnConectar.setEnabled(true);
        v.btnDesconectar.setEnabled(false);
    }
    
    
    public void agregarArchivo(List<Paquete> recibido){
        m.recibirArchivo(recibido);
    }
    
        
    public void borrarArchivo(String nombre){
        m.borrarArchivo(nombre);
    }
    
    public Object[][] traerArchivos(){
        ArrayList<Archivo> archivos = m.archivos;
        Object[][] retorna = new Object[archivos.size()][2];
        System.out.println("Traje archivos "+archivos.size());
        int i=0;
        for(Archivo a: archivos){
            retorna[i][0] = a.nombre;
            retorna[i][1] = a.partes;
            i++;
        }
        
        return retorna;
    }
    
    public String verArchivo(String nombre){
       return m.traerArchivo(nombre,0);
        
    }
    
    public String verNodos(String nombre){
       return m.traerArchivo(nombre,1);
        
    }
    
    public Object[][] verNodosArchivo(){
        ArrayList<Paquete> vecinos = m.vecinosPartes;
        Object[][] retorna = new Object[vecinos.size()][2];
        int i=0;
        for(Paquete a: vecinos){
            retorna[i][0] = a.data;
            retorna[i][1] = a.parte;
            i++;
        }
        return retorna;
    }

}
